package cn.topevery.garden.entity.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.topevery.garden.entity.po.GreFile;
import cn.topevery.garden.entity.serializer.GeometrySerializer;
import com.alibaba.fastjson.annotation.JSONField;
import hw.topevery.framework.dto.PointDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.locationtech.jts.geom.Geometry;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 视图
 *
 * @author code-generate
 * @date 2022-01-05
 */
@Data
@ApiModel(value = "GreLand 视图", description = " 视图")
public class GreLandVO extends ExcelImportVO implements Serializable {
    /**
     * 自增id
     */
    private Integer id;
    /**
     * UUID
     */
    @ApiModelProperty(value = "UUID")
    private String landId;

    /**
     * 编号
     */
    @ApiModelProperty(value = "编号")
    @Excel(name = "编号(必填)", orderNum = "0")
    private String code;

    /**
     * 大类ID
     */
    @ApiModelProperty(value = "大类ID")
    private String bigClassId;

    /**
     * 大类
     */
    @ApiModelProperty(value = "大类")
    @Excel(name = "绿地大类(必填)", orderNum = "0")
    private String bigClassName;

    /**
     * 中类ID
     */
    @ApiModelProperty(value = "中类ID")
    private String mediumClassId;

    /**
     * 中类
     */
    @ApiModelProperty(value = "中类")
    @Excel(name = "绿地中类", orderNum = "0")
    private String mediumClassName;

    /**
     * 小类Id
     */
    @ApiModelProperty(value = "小类Id")
    private String smallClassId;

    /**
     * 小类
     */
    @ApiModelProperty(value = "小类")
    @Excel(name = "绿地小类", orderNum = "0")
    private String smallClassName;

    /**
     * 所属路段
     */
    @ApiModelProperty(value = "所属路段")
    @Excel(name = "所属路段", orderNum = "0")
    private String aloneLoad;

    /**
     * 绿地名称
     */
    @ApiModelProperty(value = "绿地名称")
    @Excel(name = "名称(必填)", orderNum = "0")
    private String greeClass;

    /**
     * 绿地类型/防护类型/所属性质
     */
    @ApiModelProperty(value = "绿地类型/防护类型/所属性质")
    private String type;

    private String typeName;

    /**
     * 面积(平方米）
     */
    @ApiModelProperty(value = "面积(公顷）")
    @Excel(name = "面积(公顷)", orderNum = "0")
    private Double measure;

    /**
     * 绿化覆盖面积
     */
    @ApiModelProperty(value = "绿化覆盖面积")
    private Double greMeasure;

    /**
     * 地点描述
     */
    @ApiModelProperty(value = "地点描述")
    @Excel(name = "具体地址", orderNum = "0")
    private String address;

    /**
     * 范围
     */
    @ApiModelProperty(value = "范围")
    @JSONField(serializeUsing = GeometrySerializer.class, deserializeUsing = GeometrySerializer.class)
    private Geometry mapRanges;

    /**
     * 计算空间数据
     */
    @ApiModelProperty(value = "计算空间数据")
    @Excel(name = "平面坐标wkt")
    private String geoWkt;

    /**
     * 区域Id
     */
    @ApiModelProperty(value = "区域Id")
    private String distractId;

    /**
     * 区域
     */
    @ApiModelProperty(value = "区域")
    @Excel(name = "所属区域(必填)", orderNum = "0")
    private String distractName;

    /**
     * 街道Id
     */
    @ApiModelProperty(value = "街道Id")
    private String streetId;

    /**
     * 街道名称
     */
    @ApiModelProperty(value = "街道名称")
    @Excel(name = "所属街道", orderNum = "0")
    private String streetName;

    /**
     * 社区Id
     */
    @ApiModelProperty(value = "社区Id")
    private String communityId;

    /**
     * 社区名称
     */
    @ApiModelProperty(value = "社区名称")
    @Excel(name = "所属社区", orderNum = "0")
    private String communityName;

    /**
     * 图片地址
     */
    @ApiModelProperty(value = "图片地址")
    private String fileUrl;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Excel(name = "备注", orderNum = "0")
    private String desc;

    /**
     * 普查日期
     */
    @ApiModelProperty(value = "普查日期")
    @Excel(name = "普查日期", orderNum = "0")
    private LocalDate date;

    /**
     * 植被属性
     */
    @ApiModelProperty(value = "植被属性")
    @Excel(name = "植被属性", orderNum = "0")
    private String attr;

    /**
     * 植被数量
     */
    @ApiModelProperty(value = "植被数量")
    @Excel(name = "植被数量", orderNum = "0")
    private Integer attrCnt;

    /**
     * 是否免费开放 0: false 1: true
     */
    @ApiModelProperty(value = "是否免费开放 0: false 1: true")
    private String isFree;

    /**
     * 公园服务半径
     */
    @ApiModelProperty(value = "公园服务半径")
    @JSONField(serializeUsing = GeometrySerializer.class, deserializeUsing = GeometrySerializer.class)
    private Geometry serviceRadius;

    /**
     * 数据发布 0 false 1 ture
     */
    @ApiModelProperty(value = "数据发布 0 false 1 ture")
    private Boolean dataPublic;

    /**
     * 部门Id
     */
    @ApiModelProperty(value = "部门Id")
    private String deptId;

    /**
     * 部门Id
     */
    @ApiModelProperty(value = "部门Id")
    @Excel(name = "所属部门", orderNum = "0")
    private String deptName;

    /**
     * 图层名称
     */
    @ApiModelProperty(value = "图层名称")
    private String objName;

    /**
     * 品种
     */
    @ApiModelProperty(value = "品种")
    private String variety;

    /**
     * 管理单位
     */
    @ApiModelProperty(value = "管理单位")
    private String management;

    /**
     * 开放时间
     */
    @ApiModelProperty(value = "开放时间")
    private String openhours;

    /**
     * 栽种时间
     */
    @ApiModelProperty(value = "栽种时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime plTime;

    /**
     * 防护等级
     */
    @ApiModelProperty(value = "防护等级")
    private String level;

    /**
     * 防护绿地规格
     */
    @ApiModelProperty(value = "防护绿地规格")
    private String spec;

    /**
     * 建设时间
     */
    @ApiModelProperty(value = "建设时间")
    private LocalDate conTime;

    @ApiModelProperty(value = "绿地类型")
    private String landType;

    @ApiModelProperty(value = "附件")
    private List<GreFile> fileList;

    @ApiModelProperty(value = "范围点信息")
    private List<List<PointDto>> mapRangesPoints;

    @ApiModelProperty(value = "状态")
    private Integer dbStatus;

    @ApiModelProperty(value = "创建时间")
    private LocalDateTime dbCreateDate;

    @ApiModelProperty(value = "创建人id")
    private Integer dbCreateId;

    @ApiModelProperty(value = "绿地大类编号")
    private String mediumClassCode;

    @ApiModelProperty(value = "绿地大类编号")
    private String smallClassCode;

    private String totalNumber;
}
